/*
 * Title: 下落的小球（Dropping Balls）
 * Author: Yuanshun L
 * Created : 23-otc-2021
 */

#include<cstdio>
#define DMAXN 21
#define IMAXN 524288


int main(){

    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);

    int num, d,i;
    scanf("%d",&num); // 案例数量
    for(int rnd=1;rnd<=num;rnd++){
        scanf("%d%d",&d,&i);

        // 当前层接收结点当前接收小球的总数量
        int k = i;
        int index = 1; // 当前小球编号
        for(int j=2;j<=d;j++){
            // 根据上一个结点决定下一个当前结点的编号
            if(k%2){
                index = index*2;
            }
            else{
                index = index*2 +1;
            }
            // 当前结点接收小球的数量
            k = k % 2 ? (k+1)/ 2 : k/2; 
        }
        printf("%d\n",index);
    }
    return 0;
}
